マイクロサービス:概要とメリット

継続的なデリバリー (CD) は、ソフトウェアのリリースを自動化し、短いイテレーションで実行する方法です。

Compass を無料で試す

Improve your developer experience, catalog all services, and increase software health.

2013 年頃まで、企業は通常、大規模なコードベースを持つ単一のユニットとしてアプリを構築するモノリシック アーキテクチャでエンタープライズ ソフトウェアを構築していました。ソフトウェアがより複雑になり、クラウド コンピューティングが普及するにつれて、このアプローチは実用的ではなくなりました。

SaaS (サービスとしてのソフトウェア) 製品 (クラウド経由で提供されるアプリ) の登場により、企業は Amazon Web Services などのプロバイダーを利用して、迅速に新しいサーバーを作成し、冗長性を高められるようになりました。これにより、アップグレード中もサービスの提供を継続できるようになりました。また、ベロシティと俊敏性の新時代も幕を開けました。迅速なアップグレードと改善が期待されるようになったため、企業は開発プロセスの変更に迫られました。

企業はアプリをより小さな独立したサービスやマイクロサービスに分割し始めました。

並行して、開発者はより小規模で専門性の高いグループで作業し、アプリ全体にリスクを与えることなく個々のサービスを変更および改善するようになりました。これらのグループは、多くの場合、コードの運用についても責任を負いました。これが DevOps と呼ばれるモデルです。これらの変化を促進するために、アジャイルなどの新しい手法の開発が開始されました。これは、プロジェクトをより小規模で頻繁なリリースに分割する手法です。

マイクロサービス ベースのアプリの構造について詳しくは、以下をお読みください。また、アトラシアンの Compass が複雑さを軽減しながら、開発者にそのアーキテクチャ モデルのメリットをもたらす方法についてもご紹介します。

マイクロサービスとは?

マイクロサービスは、1 つのロジックに関与する機能です (以下で説明するドメイン マイクロサービスを除く)。複数のマイクロサービスを組み合わせて、Jira Software などの分散型アプリを作成します。

マイクロサービスには次の 3 つの種類があります。

  1. 1

    Domain microservices loosely couple services with related functionality. 

  2. 2

    統合マイクロサービス

    は、無関係なアプリ間の相互作用を促進します。
  3. 3

    作業単位マイクロサービス

    は、単一の機能を処理します。

マイクロサービスは、アプリ プログラミング インターフェイス (API) を使用して相互にやり取りします。個々のサービスに取り組む開発者は、他のマイクロサービスの内部動作を学ぶことができます。これは、モノリシック アーキテクチャに対するもう 1 つの利点です。

マイクロサービス ベースのアーキテクチャには多くのメリットがありますが、複雑さも増します。そのため、アトラシアンは Compass を開発しました。これにより、企業の規模が拡大しても、シンプルさを保つことができます。この開発者エクスペリエンス プラットフォームは、エンジニアリングの成果とチーム コラボレーションに関するすべての情報を、検索可能な一元的な場所にまとめます。

マイクロサービスの主な原則

Microservices-based architecture has several distinguishing features. Developers can develop and deploy their services independently using the languages and technologies that suit their components. 

Communication between microservices is API-based, allowing access to data from various sources without modification. Individual services can scale based on demand, saving costs and ensuring availability.

These attributes make microservices-based distributed applications flexible and easy to maintain.

マイクロサービスのメリット

Microservices provide many advantages. They simplify development and project management. Sometimes, they may eliminate the need for separate operations teams since developers can handle operations for the microservices they build. 

Some other benefits of microservices include:

回復力と障害分離

モノリシック アーキテクチャでは、1 つのエラーがアプリ全体に影響します。しかし、それぞれが独立しているマイクロサービスでは、1 つの障害がアプリの他の部分に影響を与えることはありません。

Agility

アプリを小さな単位に分割すると、開発がスピードアップします。これにより、チームはソフトウェアをより迅速に構築、テスト、デプロイできます。

テクノロジーの多様性

マイクロサービスでは、開発者が業務に適したツールとテクノロジーを選択できます。これにより、効率と生産性が向上します。

保守の改善

コンポーネントを個別にテストできるため、アプリ全体を停止することなく、簡単にバグを発見して修正できます。

回復力と障害分離

モノリシック アーキテクチャでは、1 つのエラーがアプリ全体に影響します。しかし、それぞれが独立しているマイクロサービスでは、1 つの障害がアプリの他の部分に影響を与えることはありません。

Agility

アプリを小さな単位に分割すると、開発がスピードアップします。これにより、チームはソフトウェアをより迅速に構築、テスト、デプロイできます。

テクノロジーの多様性

マイクロサービスでは、開発者が業務に適したツールとテクノロジーを選択できます。これにより、効率と生産性が向上します。

保守の改善

コンポーネントを個別にテストできるため、アプリ全体を停止することなく、簡単にバグを発見して修正できます。

マイクロサービスの課題

Microservices-based architecture has many benefits, but it also comes with challenges. 

One challenge of microservices is that the independent services generate their logs. This is a disadvantage compared to monoliths' centralized logs, which provide a single source of truth for developers and operations teams. Monitoring and infrastructure management are also more complicated since many moving pieces exist. Testing and debugging are challenging because, unlike monoliths, no integrated development environment (IDE) exists.

Atlassian's Compass can help with all these challenges. Compass facilitates collaboration and allows companies to manage the complexities of distributed architectures as they scale. It does this by bringing the disconnected information together in a central, searchable location.

マイクロサービス・アーキテクチャの利用目的

大規模なコンシューマー向け Web サイトでは、数百から数千のマイクロサービスが使用されることがよくあります。マイクロサービスは、以下のユースケースや業界で特に有効です:

  • e コマースサイト: eBay などでは、ショッピング カート、モバイル アプリ、メッセージング用に個別のマイクロサービスを使用しています。
  • 金融機関: Bank of America などでは、外部サービスとの通信にマイクロサービスを使用しています。
  • ソーシャル メディア プラットフォーム: Instagram や Facebook では、マイクロサービスを使用してユーザーのニュース フィード、メッセージ、通知、友達ネットワークを表示しています。

マイクロサービスを管理するためのベスト・プラクティス

長年にわたって、開発者はマイクロサービス開発に不可欠な多数のベスト プラクティスを作り上げてきました。以下はその一例です。

  • 単一責任の原則 (SRP) は、各モジュールまたはマイクロサービスが 1 つの機能のみを持つべきであることを規定しています。SRP 継続的インテグレーション (CI) は、プロジェクトにマージする前のコード品質チェックを自動化するソース コード管理手法で、別途 QA プロセスを行う必要性を排除することでベロシティを実現します。この DevOps ベスト プラクティスはベロシティに役立ちます。CI に続く継続的なデリバリー (CD) は、自動化されたビルド ツールを実行してソフトウェアをデプロイ可能な状態に保ちます。
  • API ゲートウェイは、マイクロサービス間の通信を簡素化し、認証と承認を管理し、セキュリティを向上させます。マイクロサービス間の
  • 非同期通信は、自律性を保持し、アプリの機能を低下させる可能性のある依存関係を削減します。
  • マイクロサービスのバージョン管理は、開発者が操作全体の削除などの破壊的変更を実装する際に極めて重要です。この手法により、移行がスムーズになり、サービス中断の可能性を最小限に抑えることができます。

Jira Software を基盤とするアトラシアンの Open DevOps により、チームはアトラシアンとパートナーのツールを簡単に自動統合でき、ソフトウェアの構築と運用に集中できます。

Compass でマイクロサービス・アーキテクチャをより適切に管理する

アトラシアンの Compass は、開発者エクスペリエンス プラットフォームであり、分散型ソフトウェア アーキテクチャとチームが 1 か所で連携できるようにします。Compass では、チームが取り組んでいるコンポーネントとサービスすべての概要を簡単に把握できます。また、ソフトウェア コンポーネント カタログも含まれているため、開発者は必要とするものを簡単に見つけられます。

Compass では、コンポーネント管理、所有権の追跡、関係の監視を簡単に行えます。また、変更をリアルタイムで追跡できます。

Compass は、開発環境に簡単に統合できます。Compass の UI はカスタマイズ可能で、社内ツールやサードパーティ ツールと互換性があるためです。Compass でマイクロサービス アーキテクチャを管理する方法や、分断された情報を一元化された場所にまとめる方法をご覧ください。

マイクロサービス:よくある質問

What tools do people commonly use in microservices?

企業では多くの場合、Kubernetes や Dockerクライアント間で API ゲートウェイも頻繁に利用します。これらのゲートウェイは、認証、アクセス制御、負荷分散などの API トラフィック機能を実行します。

マイクロサービスとモノリシック・アーキテクチャとの違いは何ですか?

モノリスは、1 つのシステムとして機能する大規模なコードベースです。モノリスでは、更新とデバッグのためにシステムのダウンタイムが必要になります。マイクロサービス アーキテクチャは、より小さく独立した機能を持つ分散型アプリです。開発者は、アプリ全体を停止することなく、これらのモジュールをアップグレード、改善、デバッグできます。これにより、拡張が簡素化され、開発のベロシティが向上します。

マイクロサービスは DevOps にどのような影響を与えますか?

DevOps を理解している人は 継続的インテグレーションと継続的なデリバリー (DevOps の CI/CD パイプライン) が DevOps 手法の主軸であることを知っています。マイクロサービスのモジュール的な性質は、このアプローチに完全に合致しています。マイクロサービスによって、開発者は小規模で頻繁なリリースを迅速に作成、テスト、デプロイできるようになります。

アトラシアン コミュニティに参加して、マイクロサービスの記事やディスカッションをご覧ください。

推奨

Compass コミュニティ

チュートリアル: コンポーネントを作成する

Compass を無料で始める